package com.xlh.pojo.courseTest;

import cn.hutool.core.date.DateTime;
import cn.hutool.core.date.DateUtil;
import com.xlh.enums.courseTest.PaperEndTypeEnum;
import lombok.Data;

import java.io.Serializable;
import java.util.Date;

@Data
public class CourseTestPaper implements Serializable {


    private static final long serialVersionUID = 1L;

    private Long id;

    /**
     * 课程关系id
     *
     * @mbg.generated
     */
    private Long courseId;

    /**
     * 制作教师id
     *
     * @mbg.generated
     */
    private Long teacherId;

    /**
     * 班级id
     *
     * @mbg.generated
     */
    private Long classId;

    /**
     * 试卷状态，1-未考试，2-正在考试，3-正在批阅，4-批阅结束
     *
     * @mbg.generated
     */
    private Integer paperStatus;

    /**
     * 试卷名称
     *
     * @mbg.generated
     */
    private String paperName;

    /**
     * 试卷总分
     *
     * @mbg.generated
     */
    private Integer score;

    /**
     * 考试时长
     *
     * @mbg.generated
     */
    private Integer timeLength;

    /**
     * 结束类型
     *
     * @mbg.generated
     */
    private Integer endType;

    /**
     * 结束日期
     *
     * @mbg.generated
     */
    private Date endDate;

    /**
     * 结束考试时间，需要在开始考试之后才插入数据
     *
     * @mbg.generated
     */
    private Date endTime;

    /**
     * 是否进行实验报告的查重
     *
     * @mbg.generated
     */
    private Boolean checkReportDuplicate;

    /**
     * 实验报告查重百分比，限制100以内数字
     *
     * @mbg.generated
     */
    private Integer reportDuplicatePercent;

    /**
     * 是否进行代码查重
     *
     * @mbg.generated
     */
    private Boolean checkCodeDuplicate;

    /**
     * 代码查重百分比率，限制100以内数字
     *
     * @mbg.generated
     */
    private Integer codeDuplicatePercent;

    /**
     * 创建时间
     *
     * @mbg.generated
     */
    private Date createTime;

    /**
     * 变更时间
     *
     * @mbg.generated
     */
    private Date updateTime;


    public Date getEndTimeOrDate(){

        if(PaperEndTypeEnum.ENDDATE.getCode().equals(endType)){
            return DateUtil.offsetMinute(DateTime.now(), timeLength);
        }else{
            return endDate;
        }
    }


}